Skip to main content

API & Database Reference

This document provides a comprehensive overview of all API endpoints, database collections, and authentication rules used in NAVIGO.

Note: All protected routes require a valid Firebase Authentication token.


Authentication

NAVIGO uses Firebase Authentication to manage user registration and login.

Methods

  • Email & Password
  • Google Sign-In

Password Requirements

Users cannot complete registration unless their password meets all requirements:

  • Length: 8–30 characters
  • Must include:
    • At least one uppercase character
    • At least one lowercase character
    • At least one numeric character
    • At least one special character

Registration attempts fail until a compliant password is provided.


API Endpoints

The API endpoints manipulate data in the database collections described above. All endpoints are protected by Firebase Auth unless stated otherwise.


1. Quest API

Manage quests in the game.

1.1 Create a Quest

  • Purpose: Add a new quest for players.
  • Method: POST
  • Endpoint: /api/quests
  • Body Parameters:
    • title (string)
    • description (string)
    • location (object) – { latitude, longitude }
    • points (number)

1.2 Get All Quests

  • Purpose: Retrieve all quests.
  • Method: GET
  • Endpoint: /api/quests
  • Query Parameters (optional):
    • status (string) – active or completed

1.3 Update a Quest

  • Purpose: Modify quest details.
  • Method: PUT
  • Endpoint: /api/quests/:id
  • Body Parameters: Any of title, description, location, points

1.4 Delete a Quest

  • Purpose: Remove a quest.
  • Method: DELETE
  • Endpoint: /api/quests/:id

2. Collectibles API

Manage badges and digital rewards.

2.1 Create a Collectible

  • Method: POST
  • Endpoint: /api/collectibles
  • Body Parameters: name, type, pointsRequired

2.2 Get All Collectibles

  • Method: GET
  • Endpoint: /api/collectibles

2.3 Update a Collectible

  • Method: PUT
  • Endpoint: /api/collectibles/:id
  • Body Parameters: Any of name, type, pointsRequired

2.4 Delete a Collectible

  • Method: DELETE
  • Endpoint: /api/collectibles/:id

3. Leaderboard API

Track player scores and rankings.

3.1 Get Leaderboard

  • Method: GET
  • Endpoint: /api/leaderboard
  • Query Parameters (optional): week

3.2 Update User Score

  • Method: PUT
  • Endpoint: /api/leaderboard/:userId
  • Body Parameters: score (number)

4. Location API (with Google Maps Integration)

Verify player presence at quest locations using the Google Maps API.

4.1 Verify Location

  • Purpose: Confirm that a player is physically at the quest location before awarding points or collectibles.
  • Method: POST
  • Endpoint: /api/location/verify
  • Body Parameters:
    • userId (string) – Player’s ID
    • questId (string) – Quest being verified
    • latitude (number) – Player’s current latitude
    • longitude (number) – Player’s current longitude

4.2 How Google Maps API is Used

  • GPS Validation: Confirms the player’s location matches the quest coordinates.
  • Preventing Cheating: Players cannot claim rewards without being physically present.
  • Integration: Coordinates from the user device are compared against Google Maps location data to ensure accuracy.
  • Database Logging: Verified locations are stored in Firestore for progress tracking and leaderboard updates.